//#include "wenz_model.h"
//#include <iostream>
//#include <iomanip>
//
//using namespace AlgoEnvNoise;
//
//int main() {
//    std::cout << "Simple WENZ Model Test" << std::endl;
//    std::cout << "======================" << std::endl;
//    
//    try {
//        // 1. Create environmental parameters
//        EnvironmentalParameters env_params;
//        env_params.temperature = 15.0;  // 15°C
//        env_params.salinity = 35.0;     // 35 ppt
//        env_params.depth = 50.0;        // 50 m
//        env_params.pressure = 101325.0; // Standard atmospheric pressure
//        
//        std::cout << "Environmental parameters set:" << std::endl;
//        std::cout << "  Temperature: " << env_params.temperature << "°C" << std::endl;
//        std::cout << "  Depth: " << env_params.depth << " m" << std::endl;
//        
//        // 2. Create WENZ model
//        WenzModel wenz_model(env_params);
//        std::cout << "WENZ model created successfully." << std::endl;
//        
//        // 3. Define frequency range (10 Hz - 10 kHz)
//        FrequencyRange freq_range(10.0, 10000.0, 10, true);
//        std::cout << "Frequency range: 10 Hz - 10 kHz (10 points, log scale)" << std::endl;
//        
//        // Test different noise sources
//        double wind_speed = 10.0;  // 10 m/s
//        double rain_rate = 5.0;    // 5 mm/h
//        ShippingLevel shipping_level = ShippingLevel::LEVEL_3;
//        
//        std::cout << "\nTest conditions:" << std::endl;
//        std::cout << "  Wind speed: " << wind_speed << " m/s" << std::endl;
//        std::cout << "  Rain rate: " << rain_rate << " mm/h" << std::endl;
//        std::cout << "  Shipping level: " << static_cast<int>(shipping_level) << std::endl;
//        
//        // 4. Calculate wind noise
//        std::cout << "\nCalculating wind noise..." << std::endl;
//        auto wind_noise = wenz_model.calculateWindNoise(wind_speed, freq_range);
//        std::cout << "Wind noise calculated. Frequencies: " << wind_noise.frequencies.size() << std::endl;
//        
//        // 5. Calculate rain noise
//        std::cout << "\nCalculating rain noise..." << std::endl;
//        auto rain_noise = wenz_model.calculateRainNoise(rain_rate, freq_range);
//        std::cout << "Rain noise calculated. Frequencies: " << rain_noise.frequencies.size() << std::endl;
//        
//        // 6. Calculate shipping noise
//        std::cout << "\nCalculating shipping noise..." << std::endl;
//        auto shipping_noise = wenz_model.calculateShippingNoise(shipping_level, freq_range);
//        std::cout << "Shipping noise calculated. Frequencies: " << shipping_noise.frequencies.size() << std::endl;
//        
//        // 7. Calculate thermal noise
//        std::cout << "\nCalculating thermal noise..." << std::endl;
//        auto thermal_noise = wenz_model.calculateThermalNoise(freq_range);
//        std::cout << "Thermal noise calculated. Frequencies: " << thermal_noise.frequencies.size() << std::endl;
//        
//        // 8. Calculate total noise
//        std::cout << "\nCalculating total noise..." << std::endl;
//        auto total_noise = wenz_model.calculateTotalNoise(wind_speed, rain_rate, shipping_level, freq_range);
//        std::cout << "Total noise calculated. Frequencies: " << total_noise.frequencies.size() << std::endl;
//        
//        // 9. Output results at specific frequencies
//        std::vector<double> test_frequencies = {100.0, 1000.0, 5000.0};
//        
//        std::cout << "\nNoise levels comparison (dB re 1 uPa²/Hz):" << std::endl;
//        std::cout << std::fixed << std::setprecision(1);
//        std::cout << "Freq(Hz)   Wind    Rain    Ship   Thermal  Total" << std::endl;
//        std::cout << "-------   -----   -----   -----   -------  -----" << std::endl;
//        
//        for (double freq : test_frequencies) {
//            std::cout << std::setw(7) << freq << "   "
//                      << std::setw(5) << wind_noise.getNoiseLevel(freq) << "   "
//                      << std::setw(5) << rain_noise.getNoiseLevel(freq) << "   "
//                      << std::setw(5) << shipping_noise.getNoiseLevel(freq) << "   "
//                      << std::setw(7) << thermal_noise.getNoiseLevel(freq) << "   "
//                      << std::setw(5) << total_noise.getNoiseLevel(freq) << std::endl;
//        }
//        
//        // Calculate band levels
//        std::pair<double, double> low_freq_band(10.0, 100.0);
//        std::pair<double, double> mid_freq_band(100.0, 1000.0);
//        std::pair<double, double> high_freq_band(1000.0, 10000.0);
//        
//        std::cout << "\nBand total levels (dB re 1 uPa):" << std::endl;
//        std::cout << "Low freq (10-100Hz):   " << total_noise.getTotalLevel(low_freq_band) << " dB" << std::endl;
//        std::cout << "Mid freq (100-1000Hz): " << total_noise.getTotalLevel(mid_freq_band) << " dB" << std::endl;
//        std::cout << "High freq (1-10kHz):   " << total_noise.getTotalLevel(high_freq_band) << " dB" << std::endl;
//        
//        std::cout << "\n=== Test completed successfully ===" << std::endl;
//        
//    } catch (const std::exception& e) {
//        std::cerr << "Test failed with error: " << e.what() << std::endl;
//        return 1;
//    }
//    
//    return 0;
//} 